import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
import java.io.IOException;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;

/**
 * Cette classe permet de sauvegarder une partie dans un fichier ".a"
 * Le fichier ".a" contient le trait permettant de savoir quel et le tour du joueur (noir ou blanc)
 * 
 * On saisi un nom de fichier, qui sera sauvegardé dans le répertoire ./save/
 * Cette sauvegarde s'effectue par l'appel de la foncion de sauvegarde de la classe Alice
 *  
 **/

class SaveFenetre extends JFrame implements KeyListener, ActionListener, WindowListener{
	   
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	private JTextField textSave = new JTextField(20); 	/*Champ de saisis*/
	private JButton bouton = new JButton(); 			/*Bouton de validation*/
	private JPanel panel = new JPanel(); 				/*Panel regoupant le champ de saisis et le bouton de validation*/
	private Fenetre fTmp;								/*Attribut fenetre temporaire*/
	
	/*Constructeur*/
	public SaveFenetre(Fenetre f) {
		/*Disposition et dimentions de la Fenêtre de sauvegarde*/
        setSize(350, 100);
        setLocation(350, 300);
        setLayout(new BorderLayout());
        panel.setLayout(new GridLayout(2,1));
        setTitle("Nom du fichier de sauvegarde");
        setVisible(true);

        fTmp = f;
        fTmp.disable();
        
        /*Configuration des éléments du panel de la fenêtre*/
        bouton.setEnabled(false);			/*Bouton désactivé au début, pas de nom de fichier*/
        bouton.setForeground(Color.GRAY); 	/*Bouton grisé au début, pas de nom de fichier*/
        bouton.setText("Sauver");
        
        textSave.setEditable(true);
        textSave.setFocusable(true);

        /*Ajout des éléments au panel*/
        panel.add(textSave);
        panel.add(bouton);
        
        /*Ajout des interactions utilisateur*/
        textSave.addKeyListener(this);
        bouton.addActionListener(this);
        addWindowListener(this);		/*Fermeture peronalisée*/
        
        /*Affichage*/
        this.getContentPane().add(panel);
        pack();      
    }
	
	public void windowClosing(WindowEvent e) {
		close();
	  }

	public void close()
	{
		dispose(); /*Fermeture de la fenêtre*/
		fTmp.enable();
	}
	
	/*Validation : évenement sur click du bouton sauver*/
	public void actionPerformed(ActionEvent e) {
		try {
			fTmp.getA().sauverPartie(textSave.getText());
		} catch (IOException e1) {
			// TODO Auto-generated catch block
			e1.printStackTrace();
		}
		close();
	}
	
	public void keyPressed(KeyEvent arg0) {
		// TODO Auto-generated method stub
				
	}

	/*Active le bouton "Sauver"*/
	public void keyReleased(KeyEvent k) {
        if (textSave.getText() != "")
        {
        	bouton.setEnabled(true);
        	bouton.setForeground(Color.BLACK);
        }
        if (textSave.getText().length() == 0)
		{
			bouton.setEnabled(false);			/*Bouton désactivé au début, pas de nom de fichier*/
	        bouton.setForeground(Color.GRAY);
		}
	}

	public void keyTyped(KeyEvent e) {
		// TODO Auto-generated method stub	
	}

	public void windowActivated(WindowEvent arg0) {
		// TODO Auto-generated method stub
	}

	public void windowClosed(WindowEvent arg0) {
		// TODO Auto-generated method stub	
	}

	public void windowDeactivated(WindowEvent arg0) {
		// TODO Auto-generated method stub
	}

	public void windowDeiconified(WindowEvent arg0) {
		// TODO Auto-generated method stub
	}

	public void windowIconified(WindowEvent arg0) {
		// TODO Auto-generated method stub
	}

	public void windowOpened(WindowEvent arg0) {
		// TODO Auto-generated method stub
	}
}